As is known, the art and science of three-dimensional (“3-D”) computer graphics concerns the generation, or rendering of two-dimensional (“2-D”) images of 3-D objects for display or presentation onto a display device or monitor, such as a Cathode Ray Tube (CRT) or a Liquid Crystal Display (LCD). The object may be a simple geometry primitive such as a point, a line segment, a triangle, or a polygon. More complex objects can be rendered onto a display device by representing the objects with a series of connected planar polygons, such as, for example, by representing the objects as a series of connected planar triangles. All geometry primitives may eventually be described in terms of one vertex or a set of vertices, For example, a coordinate (X, Y, Z) that defines a point, can represent the endpoint of a line segment or a corner of a polygon.
To generate a data set for display as a 2-D projection representative of a 3-D primitive onto a computer monitor or other display device, the vertices of the primitive are processed through a series of operations, or processing stages in a graphics-rendering pipeline. A generic pipeline is merely a series of cascading processing units, or stages, wherein the output from a prior stage serves as the input for a subsequent stage. In the context of a graphics processor, these stages include, for example, per-vertex operations, primitive assembly operations, pixel operations, texture assembly operations, and rasterization operations.
Reference is now made to FIG. 1, which is a block diagram illustrating a generic pixel rendering pipeline as is known in the prior art. The pipeline includes a triangle setup stage 10 that is configured to generate data specific to a triangle geometry rasterization such as is used in a graphics pipeline. After the triangle data is determined, an attribute setup stage 12 generates the list of interpolation variables of known and required attributes to be determined in the subsequent stages of the pipeline. The pixel position stage 14 evaluates position specific attributes for particular pixels in the triangle and the texture stage 16 processes the texture specific attributes for pixels in the triangle. While the texture stage 16 may utilize any number of techniques for determining texture values, once the texture values have been determined for any pixel, all of the attributes such as the color components, the texture value, fog, and the spectral color components are combined in the pixel shader 18 to produce a resulting color for that pixel in the graphics pipeline. The processed data proceeds to the write-back unit 20 and then is ultimately stored in the frame buffer 22.
Several of the aforementioned pipeline stages require attribute evaluation using, for example, linear interpolation techniques, among others. The manipulations by which these attributes are evaluated are quite complicated since they require evaluating attributes with respect to one another. One of ordinary skill in the art will appreciate that the process for evaluating the final color values for each pixel in the graphics pipeline might be complicated and time consuming. One way to accelerate the process is to produce a number of pixels in parallel. This approach, however, requires that each pixel produced in parallel have its own circuitry for evaluating the combination of attributes. This additional circuitry, while improving performance, can be expensive in terms of complication, size, and expense. Other techniques for accelerating the evaluation is to process pixels in groups having common attribute characteristics. This approach, however, may be susceptible to varying levels of performance improvements based on the nature of the displayed image and the relatedness of the pixel data within a triangle or other primitive.
Thus, a heretofore-unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.